home *** CD-ROM | disk | FTP | other *** search
- /* GoToWebPage.c
- * Launch a browser and go to a given URL
- * Copyright ©1996 Michael D. Crawford. All Rights Reserved.
- * You may use this code on the condition that you read the following web page:
- * http://www.scruznet.com/~crawford/WordServices/wdsvindex.html
- */
-
- #include "FindBrowser.h"
- #include "GoToWebPage.h"
-
- #define kCannotFindBrowserID 1000
-
- OSErr GoToWebPage( StringPtr urlStr )
- {
- AEAddressDesc creatorDesc;
- AppleEvent gurlEvt;
- AppleEvent replyEvt;
- OSType creator;
- AEDesc urlDesc;
- long len;
- OSErr err;
-
- err = FindBrowser( &creator );
-
- if ( err ){
- return err;
- }
-
- if ( creator == 'null' ){
- ParamText( urlStr, "\p", "\p","\p" );
- StopAlert( kCannotFindBrowserID, (ModalFilterUPP)NULL );
- return noErr;
- }
-
- err = AECreateDesc( typeApplSignature,
- (Ptr)&creator,
- sizeof( creator ),
- &creatorDesc );
- if ( err )
- return err;
-
- len = urlStr[ 0 ];
-
- err = AECreateDesc( typeChar,
- &( (urlStr)[ 1 ] ),
- len,
- &urlDesc );
- if ( err )
- return err;
-
-
- if ( creator == 'MOS!' ){
- // NCSA Mosaic has its own ideas for AE urls
- err = AECreateAppleEvent( 'mos!',
- 'ourl',
- &creatorDesc,
- kAutoGenerateReturnID,
- kAnyTransactionID,
- &gurlEvt );
- }else{
- err = AECreateAppleEvent( 'GURL',
- 'GURL',
- &creatorDesc,
- kAutoGenerateReturnID,
- kAnyTransactionID,
- &gurlEvt );
- }
- if ( err )
- return err;
-
- err = AEDisposeDesc( &creatorDesc );
- if ( err )
- return err;
-
- err = AEPutParamDesc( &gurlEvt,
- keyDirectObject,
- &urlDesc );
-
- if ( err )
- return err;
-
- err = AEDisposeDesc( &urlDesc );
- if ( err )
- return err;
-
- err = AESend( &gurlEvt,
- &replyEvt,
- kAEWaitReply + kAECanInteract + kAECanSwitchLayer,
- kAENormalPriority,
- 300,
- (AEIdleUPP)NULL,
- (AEFilterUPP)NULL );
-
- if ( err ){
- return err;
- }
-
- err = AEDisposeDesc( &gurlEvt );
- if ( err )
- return noErr;
-
- err = AEDisposeDesc( &replyEvt );
- if ( err )
- return noErr;
-
- return noErr;
- }